]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
status/network: Use property bindings for global visibility
authorFlorian Müllner <fmuellner@gnome.org>
Sun, 31 Jul 2022 23:41:01 +0000 (01:41 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Sun, 7 Aug 2022 20:41:09 +0000 (22:41 +0200)
There is a straight mapping between running/enabled and visibility,
so bind them instead of using a signal handler.

_syncConnectivity() is called both from _syncMainConnection() and
on connectivity changes, which should cover any running/enabled
changes.

That just leaves updating the icon on state changes.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>

js/ui/status/network.js

index 65e91b35e9fe191bf4038ca6d4eaa030add0416d..a8fddaad0bcbe61d5224dae92aea0c627105a1d9 100644 (file)
@@ -1779,14 +1779,18 @@ class Indicator extends PanelMenu.SystemIndicator {
 
         this._readConnections();
         this._readDevices();
-        this._syncNMState();
         this._syncMainConnection();
         this._syncVpnConnections();
 
+        this._client.bind_property('nm-running',
+            this, 'visible',
+            GObject.BindingFlags.SYNC_CREATE);
+        this._client.bind_property('networking-enabled',
+            this.menu.actor, 'visible',
+            GObject.BindingFlags.SYNC_CREATE);
+
         this._client.connectObject(
-            'notify::nm-running', () => this._syncNMState(),
-            'notify::networking-enabled', () => this._syncNMState(),
-            'notify::state', () => this._syncNMState(),
+            'notify::state', () => this._updateIcon(),
             'notify::primary-connection', () => this._syncMainConnection(),
             'notify::activating-connection', () => this._syncMainConnection(),
             'notify::active-connections', () => this._syncVpnConnections(),
@@ -2061,14 +2065,6 @@ class Indicator extends PanelMenu.SystemIndicator {
         }
     }
 
-    _syncNMState() {
-        this.visible = this._client.nm_running;
-        this.menu.actor.visible = this._client.networking_enabled;
-
-        this._updateIcon();
-        this._syncConnectivity();
-    }
-
     _flushConnectivityQueue() {
         for (let item of this._connectivityQueue)
             this._portalHelperProxy?.CloseAsync(item);